package com.zenithmind.exam.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.List;

/**
 * 创建题目DTO
 * 
 * @author ZenithMind
 * @since 2024-07-01
 */
@Data
@Schema(name = "创建题目DTO", description = "创建题目的数据传输对象")
public class QuestionCreateDTO {

    /**
     * 题库ID
     */
    @NotBlank(message = "题库ID不能为空")
    @Schema(description = "题库ID")
    private String bankId;

    /**
     * 题目标题
     */
    @NotBlank(message = "题目标题不能为空")
    @Size(max = 500, message = "题目标题长度不能超过500个字符")
    @Schema(description = "题目标题")
    private String title;

    /**
     * 题目内容
     */
    @NotBlank(message = "题目内容不能为空")
    @Schema(description = "题目内容")
    private String content;

    /**
     * 题目类型（1:单选题, 2:多选题, 3:填空题, 4:简答题, 5:判断题）
     */
    @NotNull(message = "题目类型不能为空")
    @Schema(description = "题目类型（1:单选题, 2:多选题, 3:填空题, 4:简答题, 5:判断题）")
    private Integer type;

    /**
     * 难度等级（1:简单, 2:中等, 3:困难）
     */
    @Schema(description = "难度等级（1:简单, 2:中等, 3:困难）")
    private Integer difficulty;

    /**
     * 题目分值
     */
    @Schema(description = "题目分值")
    private Integer score;

    /**
     * 选项列表（适用于选择题）
     */
    @Schema(description = "选项列表（适用于选择题）")
    private List<String> options;

    /**
     * 正确答案列表
     */
    @Schema(description = "正确答案列表")
    private List<String> correctAnswer;

    /**
     * 答案解析
     */
    @Schema(description = "答案解析")
    private String explanation;

    /**
     * 标签列表
     */
    @Schema(description = "标签列表")
    private List<String> tags;

    /**
     * 图片URLs
     */
    @Schema(description = "图片URLs")
    private List<String> imageUrls;

    /**
     * 附件URLs
     */
    @Schema(description = "附件URLs")
    private List<String> attachmentUrls;
}
